package cn.ware.house.interfaces.service.productservice;

import cn.ware.house.interfaces.entity.goods.ProductCategory;
import java.util.List;

/**
 * 商品分类服务接口，定义了对商品分类业务逻辑操作的抽象方法，
 * 这些方法会调用数据访问层（ProductCategoryMapper）的方法来实现具体功能，
 * 对外提供统一的服务接口，便于控制层调用以及业务逻辑的封装。
 */
public interface ProductCategoryService {
    // 根据分类编号查询商品分类信息（包含子分类信息，构建树形结构）
    ProductCategory findProductCategoryByIdWithChildren(Integer id);

    // 查询所有顶级（根）商品分类信息（没有父分类的分类）
    List<ProductCategory> findRootProductCategories();

    // 根据父分类编号查询子分类信息列表
    List<ProductCategory> findChildrenCategoriesByParentId(Integer parentId);

    // 插入商品分类信息（包含设置父分类关联）
    boolean insertProductCategory(ProductCategory productCategory);

    // 根据分类编号更新商品分类信息
    boolean updateProductCategoryById(ProductCategory productCategory);

    /**
     * 批量删除商品分类记录。
     *
     * @param categoryIds 要删除的商品分类编号（id）列表。
     * @return 是否删除成功，一般根据实际删除的记录数与传入的要删除记录数对比判断，若相等则返回 true，否则返回 false。
     */
    boolean deleteProductCategoriesByIds(List<Integer> categoryIds);
}